﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using SIM.Geo.BE;
using System.Linq;

namespace SIM.Geo.DA
{
    public class DALitologiaMinerales : Base
    {
        #region Metodos

        /// <summary>
        /// Devuelve la lista de LitologiaMinerales 
        /// </summary>
        /// <returns></returns>
        public List<LitologiaMinerales> ListarLitologiaMinerales(int codigoSondaje, string codigoLitologia)
        {
            return this.Context.LitologiaMinerales.Where(x => x.CodigoSondaje == codigoSondaje && x.CodigoLitologia == codigoLitologia).ToList();
        }

        /// <summary>
        /// Devuelve la lista de LitologiaMinerales 
        /// </summary>
        /// <returns></returns>
        public List<LitologiaMineralesResponse> BuscarLitologiaMinerales(int codigoSondaje, string codigoLitologia)
        {
            return this.Context.LitologiaMinerales.Where(x => x.CodigoSondaje == codigoSondaje && x.CodigoLitologia == codigoLitologia)
                .Select(x => new LitologiaMineralesResponse
                {
                    Orden = x.Orden,
                    CodigoMineralCantidad = x.CodigoMineralCantidad,
                    CodigoMineralTextura = x.CodigoMineralTextura,
                    CodigoSondaje = x.CodigoSondaje,
                    CodigoLitologia = x.CodigoLitologia,
                    CodigoMineral = x.CodigoMineral,
                    DescripcionMineral = x.Mineral.Descripcion,
                    DescripcionMineralCantidad = x.MineralCantidad.Descripcion,
                    DescripcionMineralTextura = x.MineralTextura.Descripcion
                }
                ).ToList();
        }

        /// <summary>
        /// Registra nuevo LitologiaMinerales 
        /// </summary>
        /// <param name="Litologia"></param>
        /// <returns></returns>
        public void InsertarLitologiaMinerales(LitologiaMinerales litologiaMinerales)
        {
            this.Context.LitologiaMinerales.AddObject(litologiaMinerales);
            this.Context.SaveChanges();

        }

        /// <summary>
        /// Eliminar un LitologiaMinerales 
        /// </summary>
        /// <param name="Litologia"></param>
        public void EliminarLitologiaMinerales(LitologiaMinerales litologiaMinerales)
        {
            this.Context.LitologiaMinerales.Attach(litologiaMinerales);
            this.Context.ObjectStateManager.ChangeObjectState(litologiaMinerales, EntityState.Deleted);
            this.Context.SaveChanges();

        }

        /// <summary>
        /// Obtiener un LitologiaMinerales 
        /// </summary>
        /// <param name="Litologia"></param>
        public LitologiaMinerales ObtenerLitologiaMinerales(int codigoMineral, int codigoSondaje, string codigoLitologia)
        {
            return this.Context.LitologiaMinerales.Where(x => x.CodigoMineral == codigoMineral && x.CodigoSondaje == codigoSondaje && x.CodigoLitologia == codigoLitologia).FirstOrDefault();
        }
        #endregion
    }
}
